<template>
  <div ref="charts" class="charts" />
</template>

<script>

import * as echarts from 'echarts'
import axios from 'axios'

export default {
  name: 'Map',
  data() {
    return {
      // 储存中国各大省份的矢量地图数据
      itemList: {},
      // 1. 显示基本的中国地图
      // 2. 将空气质量的数据设置给series下的对象
      // 3. 将series下的数据和geo关联起来
      // 4. 配置visualMap
      airData: [
        { name: '北京', value: 39.92 },
        { name: '天津', value: 39.13 },
        { name: '上海', value: 31.22 },
        { name: '重庆', value: 66 },
        { name: '河北', value: 147 },
        { name: '河南', value: 113 },
        { name: '云南', value: 25.04 },
        { name: '辽宁', value: 50 },
        { name: '黑龙江', value: 114 },
        { name: '湖南', value: 175 },
        { name: '安徽', value: 117 },
        { name: '山东', value: 92 },
        { name: '新疆', value: 84 },
        { name: '江苏', value: 67 },
        { name: '浙江', value: 84 },
        { name: '江西', value: 96 },
        { name: '湖北', value: 273 },
        { name: '广西', value: 59 },
        { name: '甘肃', value: 99 },
        { name: '山西', value: 39 },
        { name: '内蒙古', value: 58 },
        { name: '陕西', value: 61 },
        { name: '吉林', value: 51 },
        { name: '福建', value: 29 },
        { name: '贵州', value: 71 },
        { name: '广东', value: 38 },
        { name: '青海', value: 57 },
        { name: '西藏', value: 24 },
        { name: '四川', value: 58 },
        { name: '宁夏', value: 52 },
        { name: '海南', value: 54 },
        { name: '台湾', value: 88 },
        { name: '香港', value: 66 },
        { name: '澳门', value: 77 },
        { name: '南海诸岛', value: 55 }
      ],
      scatterData: [{
        value: [108.166551, 29.293856]
      }]
    }
  },
  mounted() {
    // 初始化echarts实例
    // 两个参数 第一个参数代表dom节点 第二个参数代表主题
    const mapChart = echarts.init(this.$refs.charts, 'light')
    // 配置数据
    axios.get('/json/china.json').then(response => {
      this.itemList = response.data
      console.log(response.data)
      // 注册地图的矢量数据
      echarts.registerMap('chinaMap', this.itemList)
      mapChart.setOption({
        geo: {
          type: 'map',
          map: 'chinaMap', // chinaMap 需要和 registerMap 中的第一个参数保持一致
          roam: true, // 设置允许拖动缩放的效果
          label: {
            show: true // 展示标签
          },
          zoom: 1 // 设置初始化的缩放比例
          // center: [] 设置地图中心点的坐标
        },
        series: [{
          data: this.airData,
          geoIndex: 0, // 将空气质量的数据和第0个geo配置关联在一起
          type: 'map'
        }, {
          data: this.scatterData, // 配置散点的坐标数据
          type: 'effectScatter',
          coordinateSystem: 'geo', // 指明散点使用的坐标系统 geo的坐标系统
          rippleEffect: {
            scale: 10 // 设置涟漪动画缩放的比例
          }
        }],
        visualMap: {
          min: 0,
          max: 300,
          inRange: {
            color: ['white', 'red'] // 控制颜色渐变的范围
          },
          calculable: true // 出现滑块
        }
      })
    }, error => {
      console.log(error + 'error!')
    })
  }
}
</script>

<style scoped>

.charts {
  width: 100%;
  height: 100%;
}

</style>
